Funciones de conversión
source("functions_hidrocarburos.R")
produccion_total <- prod_merge_gas_bep %>%
select(anio, unidad,prod_gas) %>%
left_join(prod_merge_crudo %>%
select(anio, unidad,prod_crudo) %>% mutate(unidad ="BEP") ) %>%
mutate(produccion_total_bep = prod_crudo + prod_gas)
Joining, by = c("anio", "unidad")
produccion_total
precio_crudo_vs_gas <- precio_mdomundial_gas_bep %>%
select(anio, unidad, precio_externo_gas) %>%
left_join(precios_referencia_y_expo_crudo %>%
select(-unidad) %>%
gather(key = tipo_precio_crudo,
value = precio_crudo_usd_bbl,
2:ncol(.)), by ="anio") %>%
mutate(precio_crudo_sobre_gas =precio_crudo_usd_bbl/precio_externo_gas) %>%
filter(!(is.na(precio_crudo_sobre_gas)),
!(tipo_precio_crudo %in% c("wti_spot_price_fred", "precio_me_crudo")) )
# (tipo_precio_crudo %in% c("brent_iea")) )
# (tipo_precio_crudo %in% c("brent_iea", "brent_historic")) )
precio_crudo_vs_gas
# graf <- precio_crudo_vs_gas %>%
# ggplot(aes(anio, precio_crudo_sobre_gas, color=tipo_precio_crudo))+
# geom_line()+
# labs(title = "precio del crudo sobre el del gas (ambos en barriles)")
# ggplotly(graf, width = 800, length=600)
# graf
# writexl::write_xlsx(precio_crudo_vs_gas, path= "precio del crudo vs gas.xlsx")
Pasar datos de bs de uso en yacimientos para armar relación activo yacimeinto/total
Fuentes:
Balances de Bolsar (unicamente empresas que cotizan en la bolsa de valores argentina). Revisar el stock del sector distribución porque se presenta demasiado grande con respecto al de los demás. Falta pasar los datos del activo de casi todas las empresas
AFIP. Con esta fuente no tenemos calculo de renta, sino que solo usamos la TG como parámetro. Nota: "_c" significa casos presentados de la variable correspondiente
Memorias de YPF. La década de los 80 presenta picos que hay que revisar
Calculo del Capital Total Adelantado (KTA)
Comparación entre la Memoria YPF (recopilado por BFR) y los balances extríados de Bolsar
#metros perforados
metros_perforados_posterior_al_2009 <- read_csv("../data/secretaria_energia/sesco/metros-perforados.csv",
col_types = cols(indice_tiempo = col_date(format = "%Y-%m")))
metros_perforados_anterior_al_2009 <- read_csv("../data/secretaria_energia/sesco/metros-perforados-anterior-al-2009.csv") %>%
rename(cantidad = Cantidad)
Rows: 55608 Columns: 19
-- Column specification -----------------------------------------------------------------------------------------------------------------
Delimiter: ","
chr (12): idempresa, empresa, idareapermisoconcesion, areapermisoconcesion, idareayacimiento, areayacimiento, idcuenca, cuenca, idpr...
dbl (5): anio, mes, idubicacion, idconcepto, Cantidad
lgl (1): observaciones
date (1): fecha_data
i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
metros_perforados_empresa <- metros_perforados_posterior_al_2009 %>%
bind_rows(metros_perforados_anterior_al_2009) %>%
select(anio, mes, idempresa, empresa, idconcepto, concepto, cantidad, observaciones ) %>%
group_by(anio, idempresa, empresa) %>%
summarise(metros_perforados = sum(cantidad, na.rm = T)) %>%
ungroup()
`summarise()` has grouped output by 'anio', 'idempresa'. You can override using the `.groups` argument.
#listado de empresas con sus id's
listado_empresa <- distinct(metros_perforados_empresa %>%
select(idempresa, empresa),idempresa, .keep_all = T)
# sec energia
# pozos cargados por empresas
listado_pozos <- read_csv("../data/secretaria_energia/cap_iv/listado-de-pozos-cargados-por-empresas-operadoras.csv") %>%
mutate(anio_terminacion_pozo =year(adjiv_fecha_fin_term)) %>%
left_join(listado_empresa) %>%
group_by(anio_terminacion_pozo, idempresa, empresa) %>%
summarise(pozos = n()) %>%
filter(!is.na(anio_terminacion_pozo))
Rows: 79951 Columns: 51
-- Column specification -----------------------------------------------------------------------------------------------------------------
Delimiter: ","
chr (21): sigla, formprod, idempresa, idareapermisoconcesion, idareayacimiento, idcuenca, idprovincia, codigopropio, nombrepropio, a...
dbl (22): idpozo, coordenadax, coordenaday, cota, profundidad, pet_inicial, gas_inicial, agua_inicial, iny_agua_inicial, iny_gas_ini...
lgl (1): unique_sigla_formprod
dttm (2): fechadeingreso, fecha_data
date (5): adjiv_fecha_inicio, adjiv_fecha_fin, adjiv_fecha_inicio_term, adjiv_fecha_fin_term, adjiv_fecha_abandono
i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Joining, by = "idempresa"
`summarise()` has grouped output by 'anio_terminacion_pozo', 'idempresa'. You can override using the `.groups` argument.
ppye_ypf <- ypf_seg %>%
filter(sector == "upstream" ) %>%
mutate(anio = year(fecha)) %>%
left_join(ipc_promedio %>%
select(anio, ipc_18), by = "anio") %>%
mutate(variable = "activo_upstream_ypf",
activos = activos/ipc_18,
unidad = "Millones de pesos 2018")%>%
select(anio, empresa, unidad , activo_upstream= activos) %>%
left_join(stock_balances_empresas %>%
ungroup() %>%
filter(variable == "ppye" & empresa == "YPF") %>%
select(anio, empresa, unidad, ppye_integrada =valor) , by = c("anio", "empresa", "unidad")) %>%
mutate(activo_upstream = variacion_interanual(activo_upstream),
ppye_integrada = variacion_interanual(ppye_integrada)) %>%
full_join(listado_pozos %>%
select(-empresa) %>%
ungroup() %>%
filter(idempresa == "YPF") %>%
rename(anio = anio_terminacion_pozo, empresa = idempresa), by = c("anio", "empresa") ) %>%
arrange(anio)
ppye_ypf
ppye_ypf_tasas <- ppye_ypf %>%
arrange(anio) %>%
filter(anio %in% 1998:2018) %>%
select(-c(anio, empresa, unidad)) %>%
mutate_all(tasa_crecimiento)
#matriz de correlacion
# cor_pozos_ypf <- cor(ppye_ypf_tasas, use = "complete.obs")
# cor_pozos_ypf
# distintos correlogramas
#con ggcorrplot
# p.mat = cor_pmat(cor_pozos_ypf)
# ggcorrplot(cor_pozos_ypf, hc.order = TRUE,
# type = "lower", p.mat = p.mat, lab = T)
# GGally::ggpairs(ppye_ypf_tasas, lower = list(continuous = "smooth"))
# plot(ppye_ypf_tasas)
#años bases
anio_base_ypf_segmento <- ppye_ypf$activo_upstream[ppye_ypf$anio == 2006]
anio_base_ypf_bolsar <- ppye_ypf$ppye_integrada[ppye_ypf$anio == 2006]
stock_y_pozos_ypf <- ppye_ypf %>%
mutate(indice_pozos_06 = generar_indice(serie= pozos ,
fecha = anio,
fecha_base = 2006)) %>%
mutate(ppye_ypf_estimado = anio_base_ypf_bolsar * indice_pozos_06,
activo_ypf_estimado =anio_base_ypf_segmento * indice_pozos_06,
unidad_ppye="Millones de pesos 2018")
# stock_y_pozos_ypf %>%
# select(anio, unidad = unidad_ppye, ppye_ypf_estimado, activo_ypf_estimado) %>%
# gather(key = estimacion,
# value = valor,
# 3:4) %>%
# filter(anio >1960) %>%
# ggplot(aes(anio,valor , color = estimacion))+
# geom_line()+
# labs(y= "Millones de pesos de 2018", title = "Estimacion de Activo usptream y PPyE de YPF a partir de indice de pozos")
pozos_yfp_sobre_total <- listado_pozos %>%
rename(anio = anio_terminacion_pozo) %>%
group_by(anio) %>%
summarise(pozos_cargados_sec_energia = sum(pozos, na.rm = T)) %>%
left_join(listado_pozos %>%
rename(anio = anio_terminacion_pozo) %>%
filter(idempresa == "YPF") %>%
group_by(anio, idempresa) %>%
summarise(pozos_cargados_ypf = sum(pozos, na.rm = T))) %>%
mutate(ypf_sobre_total = pozos_cargados_ypf/pozos_cargados_sec_energia)
`summarise()` has grouped output by 'anio'. You can override using the `.groups` argument.
Joining, by = "anio"
# pozos_yfp_sobre_total
estimacion_ppye_total_via_ypf <- stock_y_pozos_ypf %>%
select(anio, unidad = unidad_ppye, ppye_ypf_estimado, activo_ypf_estimado) %>%
gather(key = estimacion,
value = valor,
3:4) %>%
left_join(pozos_yfp_sobre_total %>%
select(anio, ypf_sobre_total)) %>%
mutate(valor = valor/ypf_sobre_total,
estimacion = case_when(estimacion == "ppye_ypf_estimado" ~ "ppye_estimado_total",
estimacion == "activo_ypf_estimado" ~ "activo_estimado_upstream" ))
Joining, by = "anio"
# estimacion_ppye_total_via_ypf %>%
# filter(anio >1960) %>%
# ggplot(aes(anio,valor , color = estimacion))+
# geom_line()+
# labs(y= "Millones de pesos de 2018",
# title = "Estimacion de Activo usptream y PPyE total a partir de ampliación de pozos YPF")
# CEFIP cont et al. Subsidios como % del PBI
subsidios_cefip <- read_excel("../data/cefip/subsidios.xlsx") %>%
gather(key = anio,
value = subsidios_porcentaje_pbi,
2:ncol(.)) %>%
filter(sector %in% c( "Plan Gas",
# "ENARSA","CAMMESA",
"Subsidios FF GN y GLP")) %>%
mutate(anio = as.double(anio)) %>%
left_join(ganancia_y_pbi %>%
select(anio, pbi)) %>%
mutate(subsidios_porcentaje_pbi=as.double(subsidios_porcentaje_pbi),
subsidios_cefip = subsidios_porcentaje_pbi/100 * pbi * 10^6) %>%
group_by(anio) %>%
summarise(unidad = "Pesos corrientes",
subsidios_cefip=sum(subsidios_cefip, na.rm = T))
Joining, by = "anio"
NAs introducidos por coerci昼㸳n
#ejes
subsidios_ejes <- read_excel("../data/ejes/subsidios.xlsx" ) %>%
rename(subsidios_usd = subsidios_hidrocarburos) %>%
right_join(tcp_anual_b %>%
select(anio, tcc), by = "anio") %>%
group_by(anio) %>%
summarise(unidad = "Pesos corrientes",
subsidios_ejes = subsidios_usd*tcc*10^6)
subsidios_hidrocarburos <- subsidios_ejes%>%
select(anio, unidad, subsidios_ejes) %>%
full_join(subsidios_cefip, by =c("anio", "unidad")) %>%
arrange(-anio) %>%
mutate(unidad = "Pesos corrientes")
# x = subsidios_cefip/subsidios_ejes)
subsidios_hidrocarburos
\[TG_{hidrocarburos} = \frac{PV_{hidrocarburífera}}{KTA_{hidrocarburífero}}\]
##Total rama
La renta apropiada por las empresas de la rama se calcula por medio del diferencial de tasas de ganancia entre el sector hidrocarburífero que surge a partir de los balances y la rentabilidad normal de la economía.
\[Renta\_empresas = KTA_{hidrocarburífero} * (TG_{hidrocarburífera} - TG_{referencia})\] \[TG_{hidrocarburífera} = \frac{Gcia_{hidrocarburos}}{KTA_{hidrocarburífero}}\] Por lo cual, la renta apropiada por las empresas de la rama sería equivalente a:
\[Renta\_empresas = Gcia_{hidrocarburos} - KTA_{hidrocarburífero} * TG_{referencia}\]
Donde:
Joining, by = "anio"
Renta apropiada mediante el abaratamiento en el consumo interno por efecto del diferencial de precios interno/externo, sobrevaluación de la moneda y retenciones a la exportación
\[RDP= ProdInt * Pext * TCP - ProdInt * PMI * TCC\]
Donde:
\[RDP = MdoInt * PMI * (\frac{TCP}{TCC} - 1)\]
\[Rsobrevaluacion = Expo * Pext * (TCP - TCC)\]
Donde: * \(Rsobrevaluacion\) = Renta apropiada por exportaciones con tipo de cambio sobrevaluado * \(Expo\) = Exportaciones (barriles de petróleo ó MMBTU) * \(Pext\) = Precio de referencia del mercado externo (USD) * \(TCP\) = Tipo de Cambio de Paridad * \(TCC\) = Tipo de Cambio Comercial
Joining, by = "anio"
Joining, by = "anio"
Joining, by = c("anio", "unidad")
Joining, by = c("anio", "unidad")
\[Rimp = RE + Reg\]
Donde:
\[RR = (PI - PRMi) * CrudoP\]
\[RC = (PI - PRMi - MR) * CrudoP \]
Esto resulta equivalente a plantear:
\[RC = PCMi * CrudoP\]
Existen dos caminos para llegar al monto total de renta de la tierra hidrocarburífera: uno es descontando la ganancia normal de las empresas a la plusvalía total del sector y el otro es por medio de la suma de mecanismos de apropiación.
\[Renta\_hidrocarburífera = PV_{hidrocarburífera} - Gcia\_Normal_{hidrocarburífera}\] Donde:
\[Gcia\_Normal_{hidrocarburífera} = KTA_{hidrocarburífero} * TG_{referencia}\]
Donde:
En este caso, seleccionamos la tasa de ganancia del sector industrial como parámetro para diferenciar la renta de la ganancia. A su vez, para el capital total adelantado de las empresas hidrocarburíferas, seleccionamos unicamente el valor resultante de la estimación de la PPyE de Bolsar a partir del indice de flujo de pozos (variable “ppye_bolsar_flujo”), por lo que le faltan los inventarios y salarios adelantados.
El cálculo de renta total hidrocarburífera que se obtiene por medio de descontar la ganancia normal a la plusvalía total del sector, debe ser igual a la renta obtenida por medio de la agregación de los distintos mecanismos de apropiación. Es decir:
\[Renta\_hidrocarburífera = Renta\_diferencial\_precios + Renta\_sobrevaluación + Renta\_empresas + Impuestos\_netos\_específicos \] \[Impuestos\_netos\_específicos = Retenciones + Regalías - Subsidios\]
#################### solo gas
# Gas
# renta_gas_pbi_pv <- renta_diferencial_precios_gas %>%
# select(anio,renta_diferencial_precios_gas, renta_abaratamiento_sobrevaluacion_gas ) %>%
# group_by(anio ) %>%
# mutate_all(function(x) {x / 10^6}) %>%
# left_join(ganancia_y_pbi) %>%
# mutate(renta_dif_precios_gas_pv = renta_dif_precios_gas/ganancia,
# renta_dif_precios_gas_pbi = renta_dif_precios_gas/pbi,
# renta_abaratamiento_sobrevaluacion_gas_pv = renta_abaratamiento_sobrevaluacion_gas/ganancia,
# renta_abaratamiento_sobrevaluacion_gas_pbi = renta_abaratamiento_sobrevaluacion_gas/pbi,
# unidad = "Millones de Pesos corrientes")
#
# graf_renta_gas_pv <- renta_gas_pbi_pv %>%
# select(anio, 7:ncol(.) ) %>%
# gather(key = tipo_renta,
# value = valor,
# 2:ncol(.)) %>%
# ggplot(aes(anio, valor, color = tipo_renta, fill = tipo_renta))+
# geom_col(position = "dodge")+
# theme(legend.position = "bottom")+
# labs(title = "Renta petrolera por diferencial de precios interno y externo sobre PBI y Ganancias Totales",
# y = "%")
# plotly::ggplotly(graf_renta_gas_pv)
\[Q\_total = Q_{petróleo} + Q_{gas} \] Donde:
\[ Costos\_totales = CI + MS + ConKfijo\]
Donde:
\[Costos\_totales\_con\_Gcia = Costos\_totales + Gcia\_Normal_{hidrocarburífera} \] Donde:
\[ Precio\_costo = \frac{Costos\_totales}{Q\_total} \] Donde: * \(Precio\_costo\) = Precio de costo en BOE
A partir de esto se puede calcular un costo recuperable del petróleo y del gas
\[Costo\_crudo = Q_{petróleo} * Precio\_costo\] \[Costo\_gas = Q_{gas} * Precio\_costo\]
\[Precio\_produccion = \frac{Costos\_totales\_con\_Gcia}{Q\_total}\]
\[Precio\_vta\_potencial = \frac{Q\_total*Pext_{petróleo} - Costos\_totales}{Q\_total} \]
Donde: * \(Precio\_produccion\)= Precio de produccion * \(Precio_vta_potencial\) = Precio de venta potencial * \(Pext_{petróleo}\) = Precio de exportación/referencia internacional del petróleo crudo
#estimacion costos propia
costos <- produccion_total %>%
select(anio, unidad_produccion=unidad,
produccion_crudo =prod_crudo, produccion_gas=prod_gas,
produccion_total=produccion_total_bep) %>%
left_join(stock_estimado %>%
left_join(ipc_promedio %>% select(anio, ipc_18)) %>%
# filter(variable == "ppye_estimado_bolsar") %>%
mutate(consumo_k_fijo = valor * ipc_18 * consumo_k_fijo_ypf) %>%
select(anio, consumo_k_fijo)) %>%
left_join(valor_total_produccion %>%
left_join(ipc_promedio %>% select(anio, ipc_18)) %>%
left_join(tcp_anual_b %>% select(-sobrevaluacion)) %>%
filter(variable %in% c("ci_extr", "ms_extr"),
fuente%in% c("CCNN oficial", "Empalme CCNN")) %>% #"Criterio CCNN"
mutate(valor = (valor*10^6)*ipc_18/tcc,
unidad ="USD tcc") %>%
spread(key=variable, value=valor)) %>%
left_join(renta_directo %>%
select(anio, #stock_seleccionado,
ppye, tg_normal, renta_total) ) %>%
left_join(precios_referencia_y_expo_crudo %>%
select(anio, unidad, precio_referencia_externo = precio_me_crudo)) %>%
mutate(ppye = (ppye*10^6)*ipc_18/tcc,
renta_total = (renta_total*10^6)*ipc_18/tcc,
unidad_costos= "USD/boe",
costos_totales = (ci_extr +ms_extr + consumo_k_fijo),
costos_totales_sum_gcia_normal = costos_totales + (ppye * tg_normal),
precio_costo = costos_totales/produccion_total,
precio_costo_mmbtu = conversor_bepMMBTU_p(precio_costo),
precio_produccion =costos_totales_sum_gcia_normal/produccion_total,
precio_venta_potencial = (produccion_total *precio_referencia_externo -
costos_totales)/produccion_total )
Joining, by = "anio"
Joining, by = "anio"
Joining, by = c("anio", "ipc_18")
Joining, by = "anio"
Joining, by = "anio"
Joining, by = "anio"
Joining, by = c("anio", "unidad")
# precio_venta_potencial = ((ppye * tg_normal)+renta_total)/produccion_total)
# (produccion x precio internacional - costos_totales) / barriles BOE = gcia + renta por barril
#expresar en usd tcc y tcp
costos
# costos %>%
# filter(anio > 1997) %>%
# ggplot(aes(anio, precio_costo, color = fuente))+
# geom_line(alpha = 0.5, size = 1.4)+
# labs(title = "Precio de costo",
# subtitle= "Estimacion propia a partir de CCNN y reestimacion de VBP con criterio CCNN",
# y = "USD/BOE", x = "Año")
#raw data for metadata
datos <- list( prod_merge_crudo, precio_mi_crudo, expo_q_crudo, precios_referencia_y_expo_crudo, prod_merge_gas_MMBTU,
precio_interno_gas_mmbtu_usd, expo_q_gas, precio_mdomundial_gas_MMBTU, subsidios_hidrocarburos,
ganancia_y_pbi, tcp_anual_b, ipc_promedio , renta_indirecto[,c(1:13, 17)], renta_dif_precios_crudo[,-14],
renta_diferencial_precios_gas[,-13], renta_tcp_crudo[,-c(12:13)], renta_tcp_gas, regalias_usd, retenciones_crudo, subsidios_hidrocarburos,
renta_produccion_balances , criterio_propio, renta_directo, renta_directo_pbi[,c(1,14:15)],
renta_indirecto[,c(1,19:20)], ccnn_oficial, criterio_ccnn, empalme_ccnn, criterio_propio,
renta_comparacion, renta_empresas_balances, stock_balances_empresas, union_segmentos, costos)
## variables de todos los dataframes
columnas <- c()
for(i in 1:length(datos)){
columnas <- c(columnas, colnames(datos[[i]]))
}
list_col <- as.data.frame(unique(columnas))
# x <- readxl::read_excel("columnas.xlsx") %>%
# # rename(variable = "unique(columnas)") %>%
# mutate(unidad = case_when(str_detect(variable, regex("gas|bolivia")) & str_detect(variable, regex("precio|price")) ~ "USD/MMBTU",
# str_detect(variable, regex("gas|lng")) & str_detect(variable, regex("prod")) ~ "MMBTU",
# str_detect(variable, regex("crudo|petroleo")) & str_detect(variable, regex("precio")) ~ "USD/Barril",
# str_detect(variable, regex("crudo|petroleo")) ~ "Barriles",
# str_detect(variable, regex("crudo|petroleo")) & str_detect(variable, regex("prod|expo")) ~ "Barriles"))
#
# writexl::write_xlsx(x, path = "columnas.xlsx")
t1 <- Sys.time()
delta <- as.numeric( t1 - t0, units = "secs") #calculo la diferencia de tiempos
print( delta)
[1] 57.99892
#concatenacion de all data
all_raw_data = rbindlist(list(prod_merge_crudo ,prod_merge_gas_MMBTU,
expo_q_crudo , expo_q_gas_MMBTU,
precio_mi_crudo, precio_interno_gas_mmbtu_usd,
precios_referencia_crudo, precios_exportacion_crudo,
precios_referencia_gas, precios_exportacion_gas,
regalias_to_vars, retenciones_pg, subsidios_pg), use.names=TRUE)